#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct student {
	char id[20];
	char name[20];
	char sex[3];
};
//增加
int addstudent (struct student s[],int n)
{
    printf("请输入学生ID：\n");
    scanf("%s", s[n].id); 
    // 检查ID是否唯一
    for (int i = 0; i < n; i++) {
        if (strcmp(s[i].id, s[n].id) == 0) { // 判断是否有重复id
            printf("此ID已存在，请输入不同的ID。\n");
            return n; // 返回当前学生数量，不增加新学生
        }
    }
    printf("请输入学生姓名：\n");
    scanf("%s", s[n].name);
    printf("请输入学生性别：\n");
    scanf("%s", s[n].sex);
    return n + 1; // 增加学生数量并返回
}

//删除
int delstudent (struct student s[],int n)
{
	char id[20];//新id和原来的id比对
    printf("请输入要删除的学生ID：\n");
    scanf("%s", id);
    for (int i = 0; i < n; i++) {
        if (strcmp(s[i].id, id) == 0) {//比较是否相同
            for (int j = i; j < n - 1; j++) {
                s[j] = s[j + 1]; // 将后面的学生信息前移，覆盖前面学生信息
            }
            printf("删除成功！\n");
            return n - 1; // 减少学生数量
        }
    }
    printf("未找到该ID的学生。\n");
    return n;
}
//修改
int changestudent(struct student s[],int n)
{
	char id[20];
    printf("请输入要修改的学生ID：\n");
    scanf("%s", id);
    for (int i = 0; i < n; i++) {
        if (strcmp(s[i].id, id) == 0) {
            printf("找到学生，开始修改信息。\n");
            printf("请输入新的学生姓名：\n");
            scanf("%s", s[i].name);
            printf("请输入新的学生性别：\n");
            scanf("%s", s[i].sex);
            printf("修改成功！\n");
            return n;
        }
    }
    printf("未找到该ID的学生。\n");
    return n;
			}
			
//展示函数
void showstudent(struct student s[],int n)
{
	printf("学生信息如下：\n");
	int i;
	for (i=0;i<n;i++)
	{
		printf("ID:%s \n 名字：%s \n 性别：%s\n",s[i].id,s[i].name,s[i].sex);
	}
}
int main(int argc, char *argv[]) {
	struct student s[1000];
	int numstudent =0;//学生数量初始化
	int select =0;
	while(1){
		printf("       欢迎进入系统         \n");
		printf("|--------------------------|\n");
		printf("|     1.增加学生信息       |\n");
		printf("|     2.删除学生信息       |\n");
		printf("|     3.修改学生信息       |\n");
		printf("|     4.展示学生信息       |\n");
		printf("|     0.退出系统           |\n");
		printf("|--------------------------|\n");
		printf("        请选择业务          \n");
		scanf("%d",&select);
		switch (select)
		{
			case 1:
				if(numstudent<1000){
					numstudent=addstudent(s,numstudent);
					printf("您已成功添加\n");
				}
				else{
					printf("学生信息已满，无法增加\n");
				}
				break;
			case 2:
			   if(numstudent>0){
			   	numstudent=delstudent(s,numstudent);
			   	}
				   else{
				   	printf("NULL!\n");
				   }
				break;
			case 3:
			 if(numstudent>0){
			 	numstudent =changestudent(s,numstudent);
			 	}
				 else {
				 	printf("NULL!\n");
				 }
			 
				break;
			case 4:
				if(numstudent>0){
				
					printf("所有学生信息如下：\n");
					   showstudent(s,numstudent);
					}
					else{
						printf("NULL!\n");
					}
				
				break;
			case 0:
				printf("程序已经退出！\n");
				break;
			default:
				printf("您的选择有误，请重新选择\n");
		
}
}

	return 0;
}